package cn.com.huzo.repository.tech;

import cn.com.huzo.model.entities.tech.MrpFeedingHeaderEntity;
import huzofw.repository.GenericRepository;

/**
 * 补料单数据访问对象接口。
 *
 * @author 吴旭
 */
public interface MrpFeedingHeaderRepository extends GenericRepository<MrpFeedingHeaderEntity, Long> {

    /**
     * 得到新的单据号（根据规则自动生成）
     * <p>
     * @return
     */
    String fetchNewBillNo();

    /**
     * 根据给定ID取得补料单信息对象。
     *
     * @param headerId 补料单标识
     * @param currentUserId 操作者（用于做权限控制）
     * @param workFlowId 物料需求计划审核工作流标识
     * @return 补料单信息对象
     */
    MrpFeedingHeaderEntity fetchByKey(Long headerId, Long currentUserId, Long workFlowId);

    /**
     * 审核
     *
     * @param headerId 标识
     * @param workFlowId 审核流程标识
     * @param nodeOrder 审核流程步骤
     * @param checkedBy 审核人
     * @param isCheckCurrentNode 是否针对当前流程做审核
     * @return
     */
    Integer doCheck(Long headerId, Long workFlowId, Short nodeOrder, Long checkedBy, Short isCheckCurrentNode);

    /**
     * 反审
     *
     * @param headerId 标识
     * @param nodeOrder 审核流程步骤
     * @param checkedBy 审核人
     * @return
     */
    Integer doUnCheck(Long headerId, Short nodeOrder, Long checkedBy);
    
    /**
     * 设置采购完成标记
     *
     * @param headerId 物料需求计划标识
     * @param poOverFlag 完成标记
     * @return 影响行数
     */
    Integer setPoOverFlag(Long headerId, Short poOverFlag);
}
